home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 4 / FM Towns Free Software Collection 4 - Disc 1.iso / pao / towns / cdplay / src / inoutp.asm < prev    next >
Assembly Source File  |  1991-10-18  |  3KB  |  131 lines

  1. ;==============================================================================
  2. ;    << 386ASM V2.0 >>  for  FM TOWNS
  3. ;==============================================================================
  4. .386p
  5.         PAGE        60,132
  6.         NAME        INOUTP
  7.         TITLE        inp outp function
  8. ;==============================================================================
  9. ;    ポート入出力
  10. ;
  11. ;    < High C からの呼出形式 >
  12. ;    -----------------------------------------
  13. ;    unsigned short int port ;
  14. ;    unsigned short int value ;
  15. ;    value = inp( port ) ;
  16. ;    -----------------------------------------
  17. ;    unsigned short int port ;
  18. ;    unsigned short int value ;
  19. ;    outp( port, value ) ;
  20. ;    -----------------------------------------
  21. ;
  22. ;    < note > : TABS = 4
  23. ;
  24. ;    < History >
  25. ;    1991.03.06 : CREATE
  26. ;    1991.04.13 : 清書
  27. ;
  28. ;    Programmed by Y.Hirata ( Nifty-ID : NAB03321 )
  29. ;==============================================================================
  30. ;
  31. INCLUDE    hc.inc                                ;
  32. ;
  33. CGROUP    GROUP pmcode, CODE                    ;
  34. ;
  35. ;--------------------------------------------
  36.         public    inp                            ; ポート入力
  37.         public    outp                        ; ポート出力
  38. ;--------------------------------------------
  39. ;
  40. ;////////////////////////////////////////////
  41. ;            ネイティブ部
  42. ;////////////////////////////////////////////
  43. ;
  44. pmcode    SEGMENT                                ;
  45.         ASSUME    cs:CGROUP                    ;
  46. ;
  47. ;============================================
  48. ;    ポート入力
  49. ;
  50. ;    < High C からの呼出形式 >
  51. ;    -----------------------------------------
  52. ;    unsigned short port ;
  53. ;    unsigned short value ;
  54. ;    value = inp( port ) ;
  55. ;    -----------------------------------------
  56. ;
  57. ;    < History >
  58. ;    1991.03.06 : CREATE
  59. ;
  60. ;    Programed by Y.Hirata
  61. ;============================================
  62.         ALIGN    4                            ; dword boundary
  63. inp            PROC    NEAR                    ;
  64. ;
  65. #inparm1    EQU        SS:[ebp+8]                ; 入力ポート
  66. ;
  67.             push    ebp                        ;
  68.             mov        ebp,esp                    ; スタックフレーム形成
  69. ;
  70.             push    edx                        ;
  71. ;
  72.             mov        dx,#inparm1                ;
  73.             xor        eax,eax                    ;
  74.             cli                                ; 割り込み禁止
  75.             in        al,dx                    ; ポート入力
  76.             sti                                ; 割り込み許可
  77. ;
  78. inp_end:                                    ;
  79.             pop        edx                        ;
  80. ;
  81.             pop        ebp                        ; スタックフレーム開放
  82.             ret                                ;
  83. ;
  84. inp            ENDP                            ;
  85. ;
  86. ;============================================
  87. ;    ポート出力
  88. ;
  89. ;    < High C からの呼出形式 >
  90. ;    -----------------------------------------
  91. ;    unsigned short port ;
  92. ;    unsigned short value ;
  93. ;    outp( port, value ) ;
  94. ;    -----------------------------------------
  95. ;
  96. ;    < History >
  97. ;    1991.03.06 : CREATE
  98. ;
  99. ;    Programed by Y.Hirata
  100. ;============================================
  101.         ALIGN    4                            ; dword boundary
  102. outp        PROC    NEAR                    ;
  103. ;
  104. #inparm1    EQU        SS:[ebp+8]                ; 出力ポート(第一引数)
  105. #inparm2    EQU        SS:[ebp+12]                ; 値      (第二引数)
  106. ;
  107.             push    ebp                        ;
  108.             mov        ebp,esp                    ; スタックフレーム形成
  109. ;
  110.             push    edx                        ;
  111. ;
  112.             mov        dx,#inparm1                ;
  113.             mov        al,#inparm2                ;
  114.             cli                                ; 割り込み禁止
  115.             out        dx,al                    ; ポート出力
  116.             sti                                ; 割り込み許可
  117.             xor        eax,eax                    ;
  118. ;
  119. outp_end:                                    ;
  120.             pop        edx                        ;
  121. ;
  122.             pop        ebp                        ; スタックフレーム開放
  123.             ret                                ;
  124. ;
  125. outp        ENDP                            ;
  126. ;
  127. pmcode        ENDS                            ;
  128. ;
  129.         END
  130.  
  131.